#ifndef __MPU6050_H
#define __MPU6050_H

#include <linux/i2c.h>

typedef unsigned char u8;
typedef unsigned short u16;

struct MPU6050_DATA_t                       //MPU读数据  陀螺仪 + 加速度
{
    signed short Accel_Value[3];                 //加速度(X,Y,Z)
    signed short Gyro_Value[3];                  //陀螺仪(X,Y,Z)
};
struct MPU6050_REG_t                        //MPU写数据  寄存器地址 + 寄存器数据
{
    u8 addr;                            //寄存器地址
    u8 data;                            //寄存器数据
};

#define	MPU6050_SMPLRT_DIV		0x19     //采样频率分频器
#define	MPU6050_CONFIG			0x1A     //配置
#define	MPU6050_GYRO_CONFIG		0x1B     //陀螺仪配置
#define	MPU6050_ACCEL_CONFIG	0x1C     //加速度计配置
 
#define	MPU6050_ACCEL_XOUT_H	0x3B     //加速度计X轴高位
#define	MPU6050_ACCEL_XOUT_L	0x3C     //加速度计X轴底位
#define	MPU6050_ACCEL_YOUT_H	0x3D     //加速度计Y轴高位
#define	MPU6050_ACCEL_YOUT_L	0x3E     //加速度计Y轴底位
#define	MPU6050_ACCEL_ZOUT_H	0x3F     //加速度计Z轴高位
#define	MPU6050_ACCEL_ZOUT_L	0x40     //加速度计Z轴底位
#define	MPU6050_TEMP_OUT_H		0x41     //温度测量值高位     
#define	MPU6050_TEMP_OUT_L		0x42     //温度测量值低位
#define	MPU6050_GYRO_XOUT_H		0x43     //陀螺仪X轴高位
#define	MPU6050_GYRO_XOUT_L		0x44     //陀螺仪X轴低位
#define	MPU6050_GYRO_YOUT_H		0x45     //陀螺仪Y轴高位
#define	MPU6050_GYRO_YOUT_L		0x46     //陀螺仪Y轴低位
#define	MPU6050_GYRO_ZOUT_H		0x47     //陀螺仪Z轴高位
#define	MPU6050_GYRO_ZOUT_L		0x48     //陀螺仪Z轴低位
 
#define	MPU6050_PWR_MGMT_1		0x6B     //电源管理1
#define	MPU6050_PWR_MGMT_2		0x6C     //电源管理2
#define	MPU6050_WHO_AM_I		0x75     //设备ID
 
#define CMD_IOC_MAGIC	'A'
#define MPU6050_GET		_IOW(CMD_IOC_MAGIC, 0, struct MPU6050_DATA_t)       //读数据
#define MPU6050_SET		_IOW(CMD_IOC_MAGIC, 1, struct MPU6050_REG_t)        //写数据(寄存器地址+寄存器数据)

#endif
